﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using App2Wpf.FileServer;


namespace App2Wpf.ViewModels
{

    /// <summary>
    /// 创建IOC容器，管理注册的服务
    ///注册服务道IOC容器
    ///查询服务，创建服务的具体对象
    ////服务的声明周期
    ///Transcript：瞬时
    ///Scope：指定的作用域有效
    ///singleton：单例，整个程序域唯一。
    /// 
    /// </summary>
    public class ServiceLocator
    {

        public ServiceCollection iocService;

        public ServiceProvider iocProvider;


        public ServiceLocator()
        {
            //初始化容器
            iocService = new ServiceCollection();
            //这里的是添加服务到容器中
            //Transient指的是服务实例的生命周期，即每次请求服务的时候都会创建一个新的实例
            iocService.AddSingleton<FirstVM>();
            iocService.AddSingleton<RightWrapVM>();


            //iocService.AddTransient<cardTestVM>();

            //创建serviceProvider对象来获取服务的实例
            iocProvider = iocService.BuildServiceProvider();

            firstVM = iocProvider.GetService<FirstVM>();
            rightWrapVM = iocProvider.GetService<RightWrapVM>();
            //cardTestVM = iocProvider.GetService<cardTestVM>();

            //smallCardVM = iocProvider.GetService<smallCardVM>();


            //信号传递
            firstVM.ConnectEvent += rightWrapVM.AddControlBtn;
            firstVM.ConnectEvent += rightWrapVM.AddCardAsyncTask;

            

        }

        //必须为属性
        public  static FirstVM firstVM { get; set; }

        public static  RightWrapVM rightWrapVM { get; set; }

        //public  smallCardVM smallCardVM { get; set; }
        //public cardTestVM cardTestVM { get; set; }

    }



}
